package com.springcloudalibaba.apiPay.controller;

import com.alibaba.fastjson.JSONObject;
import com.springcloudalibaba.bclass.base.BaseException;
import com.springcloudalibaba.bclass.base.BaseResult;
import com.springcloudalibaba.bclass.util.RequestUtil;
import com.springcloudalibaba.bclass.util.SnowFlakeShortUrlUtil;
import com.springcloudalibaba.bclass.util.StrUtil;
import com.springcloudalibaba.apiPay.util.WxPayUtil;
import org.springframework.web.bind.annotation.*;


import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;

/**
 * @描述: 微信支付控制器
 * @作者: lixing
 * @日期 2021/7/10 10:54
 */
@RestController
@RequestMapping(("weChatPay"))
public class WeChatPayController {
    /**
     * @描述 发起微信统一支付
     * @作者 lixing
     * @日期 2021/7/6 16:30
     * @Param [client 扫码终端类型, businessType 支付业务类型]
     */
    @PostMapping("unifiedorder")
    public BaseResult<Object> unifiedorder(HttpServletRequest request) throws Exception {
        String reqParamStr = RequestUtil.getRequestParamForWeChat(request);
        if (!StrUtil.isEffective(reqParamStr)) {
            throw new BaseException("相关参数缺失");
        }
        JSONObject reqParamJson = JSONObject.parseObject(reqParamStr);
        // 用户编号
        String userNum = reqParamJson.containsKey("userNum") ? reqParamJson.getString("userNum") : null;
        // 商品编号
        String prodNum = reqParamJson.containsKey("prodNum") ? reqParamJson.getString("prodNum") : null;
        if (!StrUtil.isEffective(prodNum)) {
            throw new BaseException("商品编号缺失");
        }
        // 生产订单编号
        long orderNo = new SnowFlakeShortUrlUtil(100, 100).nextId();
        /*
         * 根据商品编号查询商品所需支付金额
         */
        BigDecimal totalFee = new BigDecimal("1");
        /*
         * 发起统一支付
         */
        // 组装已支付信息
        return WxPayUtil.unifiedOrder(reqParamJson);
    }
}
